package dinamico.WS;

import dinamico.persistencia.Persistencia;
import dinamico.persistencia.controller.GrupoController;
import dinamico.persistencia.controller.MensajeController;
import dinamico.persistencia.controller.UsuarioController;
import dinamico.persistencia.controller.ZonaController;
import dinamico.persistencia.entities.Grupo;
import dinamico.persistencia.entities.Mensaje;
import dinamico.persistencia.entities.Punto;
import dinamico.persistencia.entities.Usuario;
import dinamico.persistencia.entities.Zona;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService()
public class UPSAM
{



    @WebMethod(operationName = "getAllZona")
    public List getAllZona()
    {
        try 
        {
            Persistencia persistencia = Persistencia.getInstance();
            ZonaController zn = new ZonaController(persistencia.getEntityManager());
            return zn.getAllZona();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getAllGrupos")
    public List getAllGrupos()
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            GrupoController gc = new GrupoController(persistencia.getEntityManager());
            return gc.getAllGrupo();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "insertZona")
    public Boolean insertZona(@WebParam(name = "zona")
    Zona zona)
    {
        try 
        {
            Persistencia persistencia = Persistencia.getInstance();
            ZonaController zn = new ZonaController(persistencia.getEntityManager());
            return zn.insertZona(zona);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getZonaById")
    public Zona getZonaById(@WebParam(name = "id")
    int id)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            ZonaController zn = new ZonaController(persistencia.getEntityManager());
            return zn.findZonaByid(id);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "deleteZona")
    public Boolean deleteZona(@WebParam(name = "id")
    int id)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            ZonaController zn = new ZonaController(persistencia.getEntityManager());
            return zn.deleteZona(id);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "deleteGrupo")
    public Boolean deleteGrupo(@WebParam(name = "id")
    int id)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            GrupoController gc = new GrupoController(persistencia.getEntityManager());
            return gc.deleteGrupo(id);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "insertGrupo")
    public Boolean insertGrupo(@WebParam(name = "grupo")
    Grupo grupo)
    {
         try
        {
            Persistencia persistencia = Persistencia.getInstance();
            GrupoController gc = new GrupoController(persistencia.getEntityManager());
            return gc.insertGrupo(grupo);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
        
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "insertUsuario")
    public Boolean insertUsuario(@WebParam(name = "usuario")
    Usuario usuario)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            return uc.insertUsuario(usuario);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "deleteUsuario")
    public Boolean deleteUsuario(@WebParam(name = "id")
    int id)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            return uc.deleteUsuario(id);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "insertMensaje")
    public Boolean insertMensaje(@WebParam(name = "mensaje")
    Mensaje mensaje)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            MensajeController mc = new MensajeController(persistencia.getEntityManager());
            return mc.insertMensaje(mensaje);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return false;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getUsuarioById")
    public Usuario getUsuarioById(@WebParam(name = "id")
    int id)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            return uc.findUsuarioByid(id);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getUsuarioByLoginAndPassword")
    public Usuario getUsuarioByLoginAndPassword(@WebParam(name = "login")
    String login, @WebParam(name = "password")
    String password)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            return uc.findUsuarioByLoginAndPasword(login, password);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getMensajeByPuntoAndUuario")
    public List getMensajeByPuntoAndUuario(@WebParam(name = "idUsuario")
    int idUsuario, @WebParam(name = "punto")
    Punto punto)
    {
        try 
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            MensajeController mc = new MensajeController(persistencia.getEntityManager());
            Usuario usuario = uc.findUsuarioByid(idUsuario);
            List<Mensaje> listaMensajes = new ArrayList<Mensaje>();
            List<Zona> listZona = new ArrayList<Zona>();
            //listZona = zonaPunto(punto);
            if(listZona.size()> 0)
            {
                for(int i = 0;i < usuario.getGrupoList().size();i++)
                {
                    List<Mensaje> listaMensajesAux = new ArrayList<Mensaje>();
                    listaMensajesAux = mc.getMensajebyGrupoAndZona(0, usuario.getGrupoList().get(i).getId());
                    for (int j = 0;j < listaMensajesAux.size();j++)
                    {
                        listaMensajes.add(listaMensajesAux.get(j));
                    }
                    listaMensajesAux.clear();
                }
                return listaMensajes;
            }
            else
            {
               return null;
            }
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "validacionUsuario")
    public Usuario validacionUsuario(@WebParam(name = "usuario")
    Usuario usuario)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            UsuarioController uc = new UsuarioController(persistencia.getEntityManager());
            return uc.findUsuarioByLoginAndPasword(usuario.getLogin(), usuario.getPassword());
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getZonaByName")
    public Zona getZonaByName(@WebParam(name = "name")
    String name)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            ZonaController zn = new ZonaController(persistencia.getEntityManager());
            return zn.findZonaByName(name);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "getGrupoByName")
    public Grupo getGrupoByName(@WebParam(name = "name")
    String name)
    {
        try
        {
            Persistencia persistencia = Persistencia.getInstance();
            GrupoController gc = new GrupoController(persistencia.getEntityManager());
            return gc.findGrupoByName(name);
        }
        catch (Exception ex)
        {
           ex.printStackTrace();
           return null;
        }
        
    }

}
